{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c55e51c5-4069-4134-8f68-7ea9a45f0038",
   "metadata": {},
   "source": [
    "[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.3/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/r2.3/tutorials/source_zh_cn/beginner/introduction.ipynb)\n",
    "\n",
    "**基本介绍** || [快速入门](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/quick_start.html#) || [张量 Tensor](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/tensor.html) || [数据集 Dataset](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/dataset.html) || [数据变换 Transforms](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/transforms.html) || [网络构建](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/model.html) || [函数式自动微分](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/autograd.html) || [模型训练](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/train.html) || [保存与加载](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/save_load.html) || [使用静态图加速](https://www.mindspore.cn/tutorials/zh-CN/r2.3/beginner/accelerate_with_static_graph.html)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e2b9aa7d",
   "metadata": {
    "tags": []
   },
   "source": [
    "# 基本介绍\n",
    "\n",
    "本节将会整体介绍昇思MindSpore和华为昇腾AI全栈，并介绍昇思MindSpore在华为昇腾AI全栈中的位置。对昇思MindSpore感兴趣的开发者，最后可以参与昇思MindSpore的[社区](https://gitee.com/mindspore/mindspore)并一键三连[（Watch/Star/Fork）](https://gitee.com/mindspore/mindspore)。\n",
    "\n",
    "## 昇思MindSpore介绍\n",
    "\n",
    "昇思MindSpore是一个全场景深度学习框架，旨在实现易开发、高效执行、全场景统一部署三大目标。\n",
    "\n",
    "其中，易开发表现为API友好、调试难度低；高效执行包括计算效率、数据预处理效率和分布式训练效率；全场景则指框架同时支持云、边缘以及端侧场景。\n",
    "\n",
    "昇思MindSpore总体架构如下图所示：\n",
    "\n",
    "![MindSpore-arch](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.3/tutorials/source_zh_cn/beginner/images/introduction2.png)\n",
    "\n",
    "- **ModelZoo（模型库）**：ModelZoo提供可用的深度学习算法网络，也欢迎更多开发者贡献新的网络([ModelZoo地址](https://gitee.com/mindspore/models))。\n",
    "- **MindSpore Extend（扩展库）**：昇思MindSpore的领域扩展库，支持拓展新领域场景，如GNN/深度概率编程/强化学习等，期待更多开发者来一起贡献和构建。\n",
    "- **MindSpore Science（科学计算）**：MindScience是基于昇思MindSpore融合架构打造的科学计算行业套件，包含了业界领先的数据集、基础模型、预置高精度模型和前后处理工具，加速了科学行业应用开发。\n",
    "- **MindExpression（全场景统一API）**：基于Python的前端表达与编程接口，支持两个融合（函数/OOP编程范式融合、AI+数值计算表达融合）以及两个统一（动静表达统一、单机分布式表达统一）。\n",
    "- **第三方前端**：支持第三方多语言前端表达，未来计划陆续提供C/C++等第三方前端的对接工作，引入更多的第三方生态。\n",
    "- **MindSpore Data（数据处理层）**：提供高效的数据处理、常用数据集加载等功能和编程接口，支持用户灵活地定义处理注册和pipeline并行优化。\n",
    "- **MindCompiler（AI编译器）**：图层的核心编译器，主要基于端云统一的MindIR实现三大功能，包括硬件无关的优化（类型推导、自动微分、表达式化简等）、硬件相关优化（自动并行、内存优化、图算融合、流水线执行等）、部署推理相关的优化（量化、剪枝等）。\n",
    "- **MindRT（全场景运行时）**：昇思MindSpore的运行时系统，包含云侧主机侧运行时系统、端侧以及更小IoT的轻量化运行时系统。\n",
    "- **MindSpore Insight（可视化调试调优工具）**：昇思MindSpore的可视化调试调优工具，能够可视化地查看训练过程、优化模型性能、调试精度问题、解释推理结果（[了解更多](https://mindspore.cn/mindinsight/docs/zh-CN/master/index.html))。\n",
    "- **MindSpore Armour（安全增强库）**：面向企业级运用时，安全与隐私保护相关增强功能，如对抗鲁棒性、模型安全测试、差分隐私训练、隐私泄露风险评估、数据漂移检测等技术（[了解更多](https://mindspore.cn/mindarmour/docs/zh-CN/master/index.html)）。\n",
    "\n",
    "### 执行流程\n",
    "\n",
    "有了对昇思MindSpore总体架构的了解后，我们可以看看各个模块之间的整体配合关系，具体如图所示：\n",
    "\n",
    "![MindSpore](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.3/tutorials/source_zh_cn/beginner/images/introduction4.png)\n",
    "\n",
    "昇思MindSpore作为全场景AI框架，所支持的有端（手机与IOT设备）、边（基站与路由设备）、云（服务器）场景的不同系列硬件，包括昇腾系列产品、英伟达NVIDIA系列产品、Arm系列的高通骁龙、华为麒麟的芯片等系列产品。\n",
    "\n",
    "左边蓝色方框的是MindSpore主体框架，主要提供神经网络在训练、验证过程中相关的基础API功能，另外还会默认提供自动微分、自动并行等功能。\n",
    "\n",
    "蓝色方框往下是MindSpore Data模块，可以利用该模块进行数据预处理，包括数据采样、数据迭代、数据格式转换等不同的数据操作。在训练的过程会遇到很多调试调优的问题，因此有MindSpore Insight模块对loss曲线、算子执行情况、权重参数变量等调试调优相关的数据进行可视化，方便用户在训练过程中进行调试调优。\n",
    "\n",
    "AI安全最简单的场景就是从攻防的视角来看，例如，攻击者在训练阶段掺入恶意数据，影响AI模型推理能力，于是MindSpore推出了MindSpore Armour模块，为MindSpore提供AI安全机制。\n",
    "\n",
    "蓝色方框往上的内容跟算法开发相关的用户更加贴近，包括存放大量的AI算法模型库ModelZoo，提供面向不同领域的开发工具套件MindSpore DevKit，另外还有高阶拓展库MindSpore Extend，这里面值得一提的就是MindSpore Extend中的科学计算套件MindSciences，MindSpore首次探索将科学计算与深度学习结合，将数值计算与深度学习相结合，通过深度学习来支持电磁仿真、药物分子仿真等等。\n",
    "\n",
    "神经网络模型训练完后，可以导出模型或者加载存放在MindSpore Hub中已经训练好的模型。接着有MindIR提供端云统一的IR格式，通过统一IR定义了网络的逻辑结构和算子的属性，将MindIR格式的模型文件 与硬件平台解耦，实现一次训练多次部署。因此如图所示，通过IR把模型导出到不同的模块执行推理。\n",
    "\n",
    "### 设计理念\n",
    "\n",
    "- 支持全场景统一部署\n",
    "\n",
    "    昇思MindSpore源于全产业的最佳实践，向数据科学家和算法工程师提供了统一的模型训练、推理和导出等接口，支持端、边、云等不同场景下的灵活部署，推动深度学习和科学计算等领域繁荣发展。\n",
    "\n",
    "- 提供Python编程范式，简化AI编程\n",
    "\n",
    "    昇思MindSpore提供了Python编程范式，用户使用Python原生控制逻辑即可构建复杂的神经网络模型，AI编程变得简单。\n",
    "\n",
    "- 提供动态图和静态图统一的编码方式\n",
    "\n",
    "    目前主流的深度学习框架的执行模式有两种，分别为静态图模式和动态图模式。静态图模式拥有较高的训练性能，但难以调试。动态图模式相较于静态图模式虽然易于调试，但难以高效执行。\n",
    "    昇思MindSpore提供了动态图和静态图统一的编码方式，大大增加了静态图和动态图的可兼容性，用户无需开发多套代码，仅变更一行代码便可切换动态图/静态图模式，用户可拥有更轻松的开发调试及性能体验。例如：\n",
    "\n",
    "    设置`set_context(mode=PYNATIVE_MODE)`可切换成动态图模式。\n",
    "\n",
    "    设置`set_context(mode=GRAPH_MODE)`可切换成静态图模式。\n",
    "\n",
    "- 采用AI和科学计算融合编程，使用户聚焦于模型算法的数学原生表达\n",
    "\n",
    "    在友好支持AI模型训练推理编程的基础上，扩展支持灵活自动微分编程能力，支持对函数、控制流表达情况下的微分求导和各种如正向微分、高阶微分等高级微分能力的支持，用户可基于此实现科学计算常用的微分函数编程表达，从而支持AI和科学计算融合编程开发。\n",
    "\n",
    "- 分布式训练原生\n",
    "\n",
    "    随着神经网络模型和数据集的规模不断增大，分布式并行训练成为了神经网络训练的常见做法，但分布式并行训练的策略选择和编写十分复杂，这严重制约着深度学习模型的训练效率，阻碍深度学习的发展。MindSpore统一了单机和分布式训练的编码方式，开发者无需编写复杂的分布式策略，在单机代码中添加少量代码即可实现分布式训练，提高神经网络训练效率，大大降低了AI开发门槛，使用户能够快速实现想要的模型。\n",
    "\n",
    "    例如设置`set_auto_parallel_context(parallel_mode=ParallelMode.AUTO_PARALLEL)`便可自动建立代价模型，为用户选择一种较优的并行模式。\n",
    "\n",
    "### 层次结构\n",
    "\n",
    "昇思MindSpore向用户提供了3个不同层次的API，支撑用户进行AI应用（算法/模型）开发，从高到低分别为High-Level Python API、Medium-Level Python API以及Low-Level Python API。高阶API提供了更好的封装性，低阶API提供更好的灵活性，中阶API兼顾灵活及封装，满足不同领域和层次的开发者需求。\n",
    "\n",
    "![MindSpore API](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.3/tutorials/source_zh_cn/beginner/images/introduction3.png)\n",
    "\n",
    "- High-Level Python API\n",
    "\n",
    "    第一层为高阶API，其在中阶API的基础上又提供了训练推理的管理、混合精度训练、调试调优等高级接口，方便用户控制整网的执行流程和实现神经网络的训练推理及调优。例如用户使用Model接口，指定要训练的神经网络模型和相关的训练设置，对神经网络模型进行训练。\n",
    "\n",
    "- Medium-Level Python API\n",
    "\n",
    "    第二层为中阶API，其封装了低阶API，提供网络层、优化器、损失函数等模块，用户可通过中阶API灵活构建神经网络和控制执行流程，快速实现模型算法逻辑。例如用户可调用Cell接口构建神经网络模型和计算逻辑，通过使用Loss模块和Optimizer接口为神经网络模型添加损失函数和优化方式，利用Dataset模块对数据进行处理以供模型的训练和推导使用。\n",
    "\n",
    "- Low-Level Python API\n",
    "\n",
    "    第三层为低阶API，主要包括张量定义、基础算子、自动微分等模块，用户可使用低阶API轻松实现张量定义和求导计算。例如用户可通过Tensor接口自定义张量，使用grad接口计算函数在指定处的导数。\n",
    "\n",
    "## 华为昇腾AI全栈介绍\n",
    "\n",
    "昇腾计算，是基于昇腾系列处理器构建的全栈AI计算基础设施及应用，包括昇腾Ascend系列芯片、Atlas系列硬件、CANN芯片使能、MindSpore AI框架、ModelArts、MindX应用使能等。\n",
    "\n",
    "华为Atlas人工智能计算解决方案，是基于昇腾系列AI处理器，通过模块、板卡、小站、服务器、集群等丰富的产品形态，打造面向“端、边、云”的全场景AI基础设施方案，涵盖数据中心解决方案、智能边缘解决方案，覆盖深度学习领域推理和训练全流程。\n",
    "\n",
    "昇腾AI全栈如下图所示：\n",
    "\n",
    "![昇腾全栈](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.3/tutorials/source_zh_cn/beginner/images/introduction1.png)\n",
    "\n",
    "下面简单介绍每个模块的作用：\n",
    "\n",
    "- **昇腾应用使能**：华为各大产品线基于MindSpore提供的AI平台或服务能力\n",
    "- **MindSpore**：支持端、边、云独立的和协同的统一训练和推理框架\n",
    "- **CANN**：昇腾芯片使能、驱动层（[了解更多](https://www.hiascend.com/zh/software/cann)）。\n",
    "- **计算资源**：昇腾系列化IP、芯片和服务器\n",
    "\n",
    "详细信息请点击[华为昇腾官网](https://e.huawei.com/cn/products/servers/ascend)。\n",
    "\n",
    "## 参与社区\n",
    "\n",
    "欢迎每一个开发者都加入到昇思MindSpore的社区中，为全场景AI框架昇思MindSpore添砖加瓦！\n",
    "\n",
    "- **昇思MindSpore 官网**：可以全方位了解昇思MindSpore，包括安装、教程、文档、社区、资源下载和资讯栏目等（[了解更多](https://www.mindspore.cn/)）。\n",
    "- **昇思MindSpore 代码**：\n",
    "\n",
    "    - [MindSpore Gitee](https://gitee.com/mindspore/mindspore)：2020年Gitee千万开源项目中Gitee指数TOP1项目，一键三连（Watch/Star/Fork）即可随时跟踪MindSpore最新进展，参与issues讨论、提交代码！\n",
    "\n",
    "    - [MindSpore GitHub](https://github.com/mindspore-ai/mindspore)：Gitee的MindSpore代码镜像，习惯用GitHub的开发者可以在这里进行MindSpore的学习，查看最新代码实现！\n",
    "\n",
    "- **昇思MindSpore 论坛**：我们努力地服务好每一个开发者，在昇思MindSpore中，无论是入门开发者还是高手大咖都能找到知音，共同学习，共同成长！（[了解更多](https://www.hiascend.com/forum/forum-0106101385921175002-1.html)）"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "MindSpore",
   "language": "python",
   "name": "mindspore"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
